/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package persistencia;

import java.util.LinkedList;
import java.util.List;
import modelo.HibernateUtil;
import org.hibernate.Session;

/**
 * Clase con un solo metodo estático (getColumnName)
 * 
 * @author cvenegas
 */
public class ColumnNames {
    
    /**
     * Accede a la BBDD y devulve el nombre de las columnas de la Tabla pasada como parámetro
     * Modifica los nombres de recibidos para:
     *  -   Cambiar a Mayúscula el primer caracter de la tabla
     *  -   Introducir espacios cuando encuentra una mayusacula    
     * @param table_name Nombre de la tabla de la que queremos el nombre de las columnas
     * @return Una Lista (List) de String con los nombres de las columnas
     */
    public static List <String> getColumnName (String table_name){
        
        List <String> columnNamesListTmp;
        List <String> columnNamesList = new LinkedList();
        String sql = "SELECT column_name FROM information_schema.columns WHERE table_name = '" + table_name + "' and table_schema = 'proyectosge'";
        Session sesion = HibernateUtil.getSessionFactory().openSession();
        columnNamesListTmp = sesion.createSQLQuery(sql).list();
        sesion.close();
        
        StringBuilder sb;
        for (String colName : columnNamesListTmp) {
            sb = new StringBuilder();
            for (int i = 0; i < colName.length(); i++) {
                if (i == 0){
                    sb = sb.append(Character.toUpperCase(colName.charAt(i)));
                }else {
                    if (Character.isUpperCase(colName.charAt(i))){
                        sb = sb.append(" ");
                    }
                    sb = sb.append(colName.charAt(i));
                }
            }
            columnNamesList.add(sb.toString());            
        }
        
        return columnNamesList;
        
    }
    
}
